/***************************************************************************
 创建者：          hualei
 开始时间：      2018.09.10
 copyright:(C)    深圳市华友高科有限公司
 修改说明：（每次有修改就添加一条，带有 修改人，修改时间，修改描述）

 ***************************************************************************
 *   MODBUS_READ 总线指令属性编辑视窗
 *
 ***************************************************************************/
#ifndef MODBUSREADINSTRUCTIONVIEW_H
#define MODBUSREADINSTRUCTIONVIEW_H

#include <QWidget>
#include "modbusreadinstructionview_global.h"
#include <QTranslator>

class ProgramView;

namespace Ui {
class ModbusReadInstructionView;
}

/**
 * @brief The EM_MODBUS_TYPE enum       MODBUS总线类型
 */
enum EM_MODBUS_TYPE
{
    E_MODBUS_TYPE_INTERNET_MASTER,      // Modbus TCP 主设备
    E_MODBUS_TYPE_INTERNET_SLAVE,       // Modbus TCP 从设备
    E_MODBUS_TYPE_RS485_MASTER,         // Modbus RS485 主设备
    E_MODBUS_TYPE_RS485_SLAVE,          // Modbus RS485 从设备
    E_MODBUS_TYPE_ERROR                 // 错误

};

/**
 * @brief The ModbusReadInstructionView class    MODBUS_READ 总线指令属性编辑视窗
 */
class MODBUSREADINSTRUCTIONVIEWSHARE_EXPORT ModbusReadInstructionView : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief ModbusReadInstructionView     构造函数
     * @param parent
     */
    explicit ModbusReadInstructionView(int styleId,QWidget *parent = 0);

    /**
     * @brief getInput      获取界面内容
     */
    void getInput();

    /**
     * @brief updateView    更新内容到界面
     */
    void updateView();

    /**
     * @brief changeLanguage    更改语言
     * @param language          语言编号
     */
    void changeLanguage(int language);

    void initialDisplayStyle(int styleId);

private slots:
    /**
     * @brief on_clearNote_Btn_clicked      清除注释槽函数
     */
    void on_clearNote_Btn_clicked();

    /**
     * @brief on_save_Btn_clicked           保存指令槽函数
     */
    void on_save_Btn_clicked();

    /**
     * @brief on_forward_Btn_clicked        上一页槽函数
     */
    void on_forward_Btn_clicked();

signals:
    /**
     * @brief cleanNote                 清除注释信号
     */
    void cleanNote();

    /**
     * @brief finishEditInstruction     完成指令属性编辑信号
     */
    void finishEditInstruction();

    /**
     * @brief saveInstruction           保存指令信号
     * @param instruction               属性编辑完成的指令
     */
    void saveInstruction(QString instruction);

private:
    /**
     * @brief translator        翻译文件对象
     */
    QTranslator translator;

public:
    /**
     * @brief programView           主视图程序
     */
    ProgramView *programView;

    /**
     * @brief instruction           指令
     */
    QString instruction;

    /**
     * @brief regReadValue          读取寄存器数值
     */
    int regReadValue;

    /**
     * @brief regAddress            读取寄存器地址
     */
    int regAddress;

    /**
     * @brief modbusType            总线类型-INTERNET/RS485  MASTER/SLAVE
     */
    EM_MODBUS_TYPE modbusType;

    /**
     * @brief JMP_LB_Value          JMP LB跳转标签号
     */
    QString JMP_LB_Value;

    /**
     * @brief noteStr               注释
     */
    QString noteStr;

    /**
     * @brief modbusId              总线ID,或iPandPort
     */
    QString modbusId;

private:
    Ui::ModbusReadInstructionView *ui;

};

#endif // MODBUSREADINSTRUCTIONVIEW_H
